package main

import(
	"fmt"
	"time"
	"runtime"
)

func main() {
	// 1. 让出CPU时间片，重新等待安排任务
	// go func(s string) {
	// 	for i := 0; i < 2; i++ {
	// 		fmt.Println(s)
	// 	}
	// }("World")
	// // 主协程
	// for i := 0; i < 2; i++ {
	// 	// 切一下，再次分配任务
	// 	runtime.Gosched()
	// 	fmt.Println("Hello")
	// }

	// 2. 退出当前协程
	go func() {
        defer fmt.Println("A.defer")
        func() {
            defer fmt.Println("B.defer")
            // 结束协程
            runtime.Goexit()
            defer fmt.Println("C.defer")
            fmt.Println("B")
        }()
        fmt.Println("A")
    }()
    time.Sleep(time.Second)
    fmt.Println("主程序结束")
}
